/*
 * TDS PEC 4
 * Grupo 3H2M
 *
 * El paquete <code>edu.uoc.tds.pec4.common.filters</code> contiene las clases de 
 * apoyo que representan los distintos filtros seleccionados en la capa de 
 * presentación. <br />Esto permite que las diferentes capas de la aplicación puedan
 * obtener los parámetros por los que deben filtrarse las distintas consultas.<br />
 *
 */
package edu.uoc.tds.pec4.common.filters;

import edu.uoc.tds.pec4.beans.CiudadDTO;
import edu.uoc.tds.pec4.beans.PaisDTO;
import edu.uoc.tds.pec4.beans.ProvinciaDTO;
import java.util.ArrayList;
import java.util.List;

/**
 * La clase <code>FiltroLocalizacion</code> permite la creación de un filtro basado 
 * en localizaciones geográficas. Incluye una lista de ciudades, provincias y/o 
 * países<br />.
 *
 * @author	Grupo 3H2M 
 * @version	26/11/2011
 * @since	1.00
 */
public class FiltroLocalizacion implements java.io.Serializable {
    
    private List<PaisDTO> paises;
    private List<ProvinciaDTO> provincias;
    private List<CiudadDTO> ciudades;

    public FiltroLocalizacion() {
        
        paises = new ArrayList<PaisDTO> ();
        provincias = new ArrayList<ProvinciaDTO> ();
        ciudades = new ArrayList<CiudadDTO> ();
    }

    
    
    public List<CiudadDTO> getCiudades() {
        return ciudades;
    }

    public void setCiudades(List<CiudadDTO> ciudades) {
        this.ciudades = ciudades;
    }

    public List<PaisDTO> getPaises() {
        return paises;
    }

    public void setPaises(List<PaisDTO> paises) {
        this.paises = paises;
    }

    public List<ProvinciaDTO> getProvincias() {
        return provincias;
    }

    public void setProvincias(List<ProvinciaDTO> provincias) {
        this.provincias = provincias;
    }
    
    public void addPais(PaisDTO pais) {
        paises.add(pais);
    }
    
    public void addProvincia(ProvinciaDTO provincia) {
        provincias.add(provincia);
    }
    
    public void addCiudad(CiudadDTO ciudad) {
        ciudades.add(ciudad);
    }

    @Override
    public boolean equals(Object obj) {
        boolean igual = false;
        if (obj != null) {
            if (obj instanceof FiltroLocalizacion) {
                igual = (this.getCiudades().equals(((FiltroLocalizacion)obj).getCiudades())) && 
                        (this.getProvincias().equals(((FiltroLocalizacion)obj).getProvincias())) &&
                        (this.getPaises().equals(((FiltroLocalizacion)obj).getPaises()));

            }
        }
        return igual;
    }

    @Override
    public int hashCode() {
        int hash = 6;
        hash = 47 * hash + (this.getCiudades() != null ? this.getCiudades().get(0).getIdCiudad().hashCode() : 0);
        return hash;
    }

    @Override
    public String toString() {
        return super.toString();
    }
    
    
}
